iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
Mobile Development

Swift大航道-啟航篇系列 第 5

swift內建的高階函式(1)

  • 分享至 

  • xImage
  •  

swift內建高階函示(1)

  • map
  • filter
  • reduce

map

map簡單來說就是把對應的陣列做變換,並return一個新的,以下有一個簡單的粒子可以參考一下

let numbers = [1, 2, 3, 4, 5]
let squares = numbers.map { $0 * 2 }
print(squares)  

$0表示傳給閉包的第一個參數,當前的參數*2並新增到新的陣列裡面,所以輸出是[2,4,6,8]

filter

filter就是用來篩選陣列中的元素的,只要有滿足條件的就會被被新增到一個新的陣列裡面

let numbers = [1, 2, 3, 4, 5]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers)  

$0表示傳給閉包的第一個參數,當前的參數如果被2整除就會新增到新的陣列裡面,所以輸出是[2,4]

reduce

reduce簡單來說就可以把一個陣列的元素結合成一個值,我們來看以下的例子吧!

let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0) { $0 + $1 }
print(sum)  // 輸出: 15

這邊reduce有給定一個初始值0,這表示累加的起始值,而後面的閉包就是元素的累加,$0代表累加的結果,$1代表陣列中當前的元素接下來我們拆分來看
第一次迭代:$0 是 0,$1 是 1。計算 0 + 1 = 1
第二次迭代:$0 是 1,$1 是 2。計算 1 + 2 = 3
第三次迭代:$0 是 3,$1 是 3。計算 3 + 3 = 6
第四次迭代:$0 是 6,$1 是 4。計算 6 + 4 = 10
第五次迭代:$0 是 10,$1 是 5。計算 10 + 5 = 15
最終,返回累加的成果=15

結論

今天學習了許多swift高階函式的用法,學到有點頭腦昏昏,也不確定甚麼時候或是如何使用,但可以慢慢開始看懂別人如何使用這些函式,也可以漸漸讓自己的程式簡潔許多,增加很多可讀性


上一篇
swift 閉包與列舉
下一篇
swift內建高階函示(2)
系列文
Swift大航道-啟航篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言